package com.ae.shield.generator;

import com.ae.shield.ModLib;
import com.ae.shield.common.effect.EffectList;
import com.ae.shield.common.enchantment.shieldSuffix.SuffixList;
import com.ae.shield.common.items.ItemList;
import com.ae.shield.common.recipe.conditions.ConfigMetalProcessingCondition;
import com.ae.shield.generator.builder.recipes.assembly.*;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.*;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.potion.Effects;
import net.minecraft.tags.ITag;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.Tags;
import net.minecraftforge.common.crafting.ConditionalRecipe;
import net.minecraftforge.common.crafting.conditions.ICondition;
import net.minecraftforge.common.crafting.conditions.ModLoadedCondition;
import net.minecraftforge.common.data.ForgeRecipeProvider;

import javax.annotation.Nonnull;
import java.util.function.Consumer;

import static com.ae.shield.common.tag.ModTags.Forge.Fluid.NITROGEN;
import static com.ae.shield.common.tag.ModTags.Forge.Item.*;
import static com.ae.shield.common.tag.ModTags.Mod.Item.*;

public class ModRecipeProvider extends ForgeRecipeProvider {
    public ModRecipeProvider(DataGenerator generatorIn) {
        super(generatorIn);
    }

    @Override
    protected void registerRecipes(@Nonnull Consumer<IFinishedRecipe> consumer) {
        //工作台无序配方
        //末影粒
        shapeless(ItemList.NUGGETS_ENDERIUM.get(), 9, INGOTS_ENDERIUM, 1).build(consumer);
        //纳米材料粒
        shapeless(ItemList.NUGGETS_NANO.get(), 9, INGOTS_NANO, 1).build(consumer);
        //铁线
        shapeless(ItemList.WIRES_IRON.get(), 3, PLATES_IRON, 1, ItemList.SHEAR.get(), 1).build(consumer);
        //金线
        shapeless(ItemList.WIRES_GOLD.get(), 3, PLATES_GOLD, 1, ItemList.SHEAR.get(), 1).build(consumer);
        //纳米线
        shapeless(ItemList.WIRES_NANO.get(), 3, PLATES_NANO, 1, ItemList.SHEAR.get(), 1).build(consumer);
        //铁粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_IRON.get(), 1, Tags.Items.INGOTS_IRON, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_iron"));
        //末影粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_ENDERIUM.get(), 3, INGOTS_LEAD, 3, Tags.Items.ENDER_PEARLS, 2, Tags.Items.GEMS_DIAMOND, 1, ItemList.HAMMER, 1)::build).build(consumer, AE("dusts_enderium2"));
        //锰粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_MANGANESE.get(), 1, INGOTS_MANGANESE, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_manganese"));
        //钽粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_TANTALUM.get(), 1, INGOTS_TANTALUM, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_tantalum"));
        //铝粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_ALUMINUM.get(), 1, INGOTS_ALUMINUM, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_aluminum"));
        //银粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_SILVER.get(), 1, INGOTS_SILVER, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_silver"));
        //金粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_GOLD.get(), 1, Tags.Items.INGOTS_GOLD, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_gold"));
        //末影粉
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.DUSTS_ENDERIUM.get(), 1, INGOTS_ENDERIUM, 1, ItemList.MORTAR.get(), 1)::build).build(consumer, AE("dusts_enderium"));
        //末影锭
        shapeless(ItemList.INGOTS_ENDERIUM.get(), NUGGETS_ENDERIUM, 9).build(consumer);
        //纳米锭
        shapeless(ItemList.INGOTS_NANO.get(), NUGGETS_NANO, 9).build(consumer);
        //绝缘材料（塑料）
        shapeless(ItemList.INSULATION.get(), 4, Tags.Items.DYES_BLACK, 1, Tags.Items.SLIMEBALLS, 1, Items.CLAY_BALL, 1).build(consumer);
        //铅板
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.PLATES_LEAD.get(), INGOTS_LEAD, 2, ItemList.HAMMER.get(), 1)::build).build(consumer, AE("plates_lead"));
        //金板
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.PLATES_GOLD.get(), Tags.Items.INGOTS_GOLD, 2, ItemList.HAMMER.get(), 1)::build).build(consumer, AE("plates_gold"));
        //铁板
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.PLATES_IRON.get(), Tags.Items.INGOTS_IRON, 2, ItemList.HAMMER.get(), 1)::build).build(consumer, AE("plates_iron"));
        //末影板
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.PLATES_ENDERIUM.get(), INGOTS_ENDERIUM, 2, ItemList.HAMMER.get(), 1)::build).build(consumer, AE("plates_enderium"));
        //纳米板
        conditional(ConfigMetalProcessingCondition.INSTANCE, shapeless(ItemList.PLATES_NANO.get(), INGOTS_NANO, 2, ItemList.HAMMER.get(), 1)::build).build(consumer, AE("plates_nano"));
        //引脚
        shapeless(ItemList.PIN.get(), 8, PLATES_GOLD, 1, ItemList.SHEAR.get(), 1, ItemList.HAMMER.get(), 1).build(consumer);
        //氮气桶
        shapeless(ItemList.NITROGEN_FLUID_BUCKET.get(), Items.BUCKET, 1, Tags.Items.ENDER_PEARLS, 3, Items.GLASS_BOTTLE, 1).build(consumer);

        //工作台有序配方
        //锤子
        shaped(ItemList.HAMMER.get(), " ac/eba/bd ", 'a', Tags.Items.INGOTS_IRON, 'b', Tags.Items.RODS_WOODEN, 'c', Tags.Items.DYES_RED, 'd', Tags.Items.DYES_BLACK, 'e', Tags.Items.DYES_YELLOW).build(consumer);
        //螺丝刀
        shaped(ItemList.SCREWDRIVER.get(), "  a/ a /c  ", 'a', PLASTIC, 'c', Tags.Items.INGOTS_IRON).build(consumer);
        //电烙铁
        shaped(ItemList.SOLDERING_IRON.get(), "aab/ b /b  ", 'a', Tags.Items.INGOTS_IRON, 'b', PLASTIC).build(consumer);
        //研钵
        shaped(ItemList.MORTAR.get(), " a /bab/bbb", 'a', Tags.Items.INGOTS_IRON, 'b', Items.WHITE_TERRACOTTA).build(consumer);
        //金属剪切器
        shaped(ItemList.SHEAR.get(), "a a/ a /b b", 'a', Tags.Items.INGOTS_IRON, 'b', PLASTIC).build(consumer);
        //基础电路板
        shaped(ItemList.CIRCUITS_BASIC.get(), "bab/sgi/dcd", 'b', Items.IRON_INGOT, 'a', ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 's', ItemList.SCREWDRIVER.get(), 'g', PLATES_GOLD, 'i', ItemList.SOLDERING_IRON.get(), 'd', Items.GLOWSTONE_DUST, 'c', ItemList.SOLDER_BALL.get()).build(consumer);
        //进阶电路板
        shaped(ItemList.CIRCUITS_ADVANCED.get(), "bab/sgi/dcd", 'b', Items.DIAMOND, 'a', ItemList.TANTALUM_CAPACITOR.get(), 's', ItemList.SCREWDRIVER.get(), 'g', PLATES_ENDERIUM, 'i', ItemList.SOLDERING_IRON.get(), 'd', Items.BLAZE_POWDER, 'c', ItemList.SOLDER_BALL.get()).build(consumer);
        //专业电路板
        shaped(ItemList.CIRCUITS_ELITE.get(), "bab/sgi/dcd", 'b', Items.NETHERITE_SCRAP, 'a', ItemList.NANO_MNO2_CAPACITANCE.get(), 's', ItemList.SCREWDRIVER.get(), 'g', PLATES_NANO, 'i', ItemList.SOLDERING_IRON.get(), 'd', Items.DRAGON_BREATH, 'c', ItemList.SOLDER_BALL.get()).build(consumer);
        //未封装的护盾
        shaped(ItemList.UN_ENCAPSULATION_SHIELD.get(), " b /ede/cac", 'a', CIRCUITS_ADVANCED, 'b', ItemList.SOLDERING_IRON.get(), 'c', ItemList.PIN.get(), 'd', ItemList.L_1H_CPU.get(), 'e', Tags.Items.DYES_BLACK).build(consumer);
        //1KV激发器
        shaped(ItemList.EXCITER_1KV.get(), 2, " c /dbd/aaa", 'a', ItemList.PIN.get(), 'b', Items.REDSTONE_BLOCK, 'c', Tags.Items.DYES_LIGHT_BLUE, 'd', PLASTIC).build(consumer);
        //2KV激发器
        shaped(ItemList.EXCITER_2KV.get(), 2, " c /bab/ded", 'b', ItemList.EXCITER_1KV.get(), 'a', Tags.Items.ENDER_PEARLS, 'c', Tags.Items.DYES_BLUE, 'd', NUGGETS_ENDERIUM, 'e', ItemList.PIN.get()).build(consumer);
        //5KV激发器
        shaped(ItemList.EXCITER_5KV.get(), 2, " c /bab/ded", 'b', ItemList.EXCITER_2KV.get(), 'a', Tags.Items.GEMS_PRISMARINE, 'c', Tags.Items.DYES_PURPLE, 'd', NUGGETS_NANO, 'e', NUGGETS_ENDERIUM).build(consumer);
        //基础限制器
        shaped(ItemList.NORMAL_LIMITER.get(), 2, " e /bab/ccc", 'a', Items.REPEATER, 'b', ItemList.INSULATION.get(), 'c', ItemList.PIN.get(), 'e', Tags.Items.DYES_RED).build(consumer);
        //进阶限制器
        shaped(ItemList.ADVANCE_LIMITER.get(), 2, " c /bab/ded", 'b', ItemList.NORMAL_LIMITER.get(), 'a', Tags.Items.ENDER_PEARLS, 'c', Tags.Items.DYES_LIGHT_BLUE, 'd', NUGGETS_ENDERIUM, 'e', ItemList.PIN.get()).build(consumer);
        //专业限制器
        shaped(ItemList.EXPERT_LIMITER.get(), 2, " c /bab/ded", 'b', ItemList.ADVANCE_LIMITER.get(), 'a', Tags.Items.GEMS_PRISMARINE, 'c', Tags.Items.DYES_PURPLE, 'd', NUGGETS_NANO, 'e', NUGGETS_ENDERIUM).build(consumer);
        //红石能量引导芯片
        shaped(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2, "a a/cbc/ada", 'a', ItemList.PIN.get(), 'b', Items.REDSTONE_BLOCK, 'c', PLASTIC, 'd', Tags.Items.GEMS_QUARTZ).build(consumer);
        //镀金能量引导芯片
        shaped(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2, "a a/cbc/ada", 'a', DUSTS_GOLD, 'b', PLATES_GOLD, 'c', ItemList.RED_STONE_ENERGY_GUIDER.get(), 'd', Items.ENDER_EYE).build(consumer);
        //超导能量引导芯片
        shaped(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2, "a a/cbc/ada", 'a', DUSTS_ENDERIUM, 'b', PLATES_ENDERIUM, 'c', ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 'd', Tags.Items.DUSTS_PRISMARINE).build(consumer);
        //铝电解电容
        shaped(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 3, " d /bcb/a a", 'a', ItemList.PIN.get(), 'b', PLASTIC, 'c', DUSTS_ALUMINUM, 'd', Tags.Items.SLIMEBALLS).build(consumer);
        //钽电容
        shaped(ItemList.TANTALUM_CAPACITOR.get(), 3, " d /bcb/a a", 'a', NUGGETS_ENDERIUM, 'b', ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 'c', DUSTS_TANTALUM, 'd', Items.ENDER_EYE).build(consumer);
        //纳米二氧化锰电容
        shaped(ItemList.NANO_MNO2_CAPACITANCE.get(), 3, " d /bcb/a a", 'a', NUGGETS_NANO, 'b', ItemList.TANTALUM_CAPACITOR.get(), 'c', DUSTS_MANGANESE, 'd', Tags.Items.DUSTS_PRISMARINE).build(consumer);
        //龙1H中央处理器
        shaped(ItemList.L_1H_CPU.get(), "bcb/eae/bdb", 'a', Items.COMPASS, 'b', PLASTIC, 'c', ItemList.EXCITER_1KV.get(), 'd', ItemList.NORMAL_LIMITER.get(), 'e', ItemList.RED_STONE_ENERGY_GUIDER.get()).build(consumer);
        //龙2K1000中央处理器
        shaped(ItemList.L_2K_1000_CPU.get(), "bcb/eae/bdb", 'a', Items.CLOCK, 'b', ItemList.PIN.get(), 'c', ItemList.L_1H_CPU.get(), 'd', ItemList.EXCITER_2KV.get(), 'e', ItemList.GOLD_PLATING_ENERGY_GUIDER.get()).build(consumer);
        //龙3A5000中央处理器
        shaped(ItemList.L_3A_5000_CPU.get(), "bcb/eae/bdb", 'a', Items.WITHER_SKELETON_SKULL, 'b', DUSTS_GOLD, 'c', ItemList.L_2K_1000_CPU.get(), 'd', ItemList.EXCITER_5KV.get(), 'e', ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get()).build(consumer);
        //鑫R3内存
        shaped(ItemList.C_R3_MEMORY.get(), "ede/bcb/aaa", 'a', ItemList.PIN.get(), 'b', PLASTIC, 'c', Tags.Items.GEMS_QUARTZ, 'd', Tags.Items.GEMS_LAPIS, 'e', DUSTS_SILVER).build(consumer);
        //鑫R4内存
        shaped(ItemList.C_R4_MEMORY.get(), "ede/bcb/aaa", 'a', DUSTS_GOLD, 'b', Tags.Items.GEMS_PRISMARINE, 'c', ItemList.C_R3_MEMORY.get(), 'd', Items.ENDER_EYE, 'e', NUGGETS_ENDERIUM).build(consumer);
        //鑫R5内存
        shaped(ItemList.C_R5_MEMORY.get(), "ede/bcb/aaa", 'a', DUSTS_ENDERIUM, 'b', INGOTS_MANGANESE, 'c', ItemList.C_R4_MEMORY.get(), 'd', Items.SHULKER_SHELL, 'e', NUGGETS_NANO).build(consumer);
        //特别环保的数据线
        shaped(ItemList.ENVIRONMENTAL_CABLE.get(), " c /bab/ c ", 'a', WIRES_IRON, 'b', Tags.Items.SLIMEBALLS, 'c', Tags.Items.DYES_WHITE).build(consumer);
        //聚合物数据线
        shaped(ItemList.POLYMERIC_CABLE.get(), " c /bab/ c ", 'a', WIRES_GOLD, 'b', PLASTIC, 'c', Items.MAGMA_CREAM).build(consumer);
        //纳米数据线
        shaped(ItemList.NANO_CABLE.get(), " c /bab/ c ", 'a', WIRES_NANO, 'b', PLASTIC, 'c', Items.POPPED_CHORUS_FRUIT).build(consumer);
        //未编程纳米机器人
        shaped(ItemList.UNPROGRAMMED_NANO_ROBOT.get(), 3, " d /bac/e e", 'a', INGOTS_NANO, 'b', ItemList.EXCITER_5KV.get(), 'c', ItemList.C_R5_MEMORY.get(), 'd', ItemList.L_3A_5000_CPU.get(), 'e', Tags.Items.NUGGETS_IRON).build(consumer);
        //未编程的强化套件
        shaped(ItemList.UNPROGRAMMED_KID.get(), "aa /aba/aaa", 'a', PLASTIC, 'b', ItemList.L_1H_CPU.get()).build(consumer);
        //单层单元粒子发生器
        shaped(ItemList.SLC_PARTICLE_PRODUCER.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_1KV.get(), 'd', WIRES_IRON, 'e', ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.MLC_PARTICLE_PRODUCER.get(), " df/aba/ c ", 'a', ItemList.SLC_PARTICLE_PRODUCER.get(), 'b', ItemList.EXCITER_2KV.get(), 'c', CIRCUITS_ADVANCED, 'd', WIRES_GOLD, 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.TLC_PARTICLE_PRODUCER.get(), " df/abe/ c ", 'a', ItemList.MLC_PARTICLE_PRODUCER.get(), 'b', ItemList.EXCITER_5KV.get(), 'c', CIRCUITS_ELITE, 'd', WIRES_NANO, 'e', ItemList.SLC_PARTICLE_PRODUCER.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //单层单元相转移镜面
        shaped(ItemList.SLC_PHASE_TRANSFER_SURFACE.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_1KV.get(), 'd', Tags.Items.GLASS_LIGHT_BLUE, 'e', ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.MLC_PHASE_TRANSFER_SURFACE.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', Tags.Items.GLASS_BLUE, 'e', ItemList.SLC_PHASE_TRANSFER_SURFACE.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.TLC_PHASE_TRANSFER_SURFACE.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.SLC_PHASE_TRANSFER_SURFACE.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', Tags.Items.GLASS_PURPLE, 'e', ItemList.MLC_PHASE_TRANSFER_SURFACE.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //单层单元电浆发生器
        shaped(ItemList.SLC_PLASMA_PRODUCER.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_2KV.get(), 'd', Items.CHAIN, 'e', ItemList.ENVIRONMENTAL_CABLE.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.MLC_PLASMA_PRODUCER.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', Items.IRON_SWORD, 'e', ItemList.SLC_PLASMA_PRODUCER.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.TLC_PLASMA_PRODUCER.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.SLC_PLASMA_PRODUCER.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', Items.IRON_BLOCK, 'e', ItemList.MLC_PLASMA_PRODUCER.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //单层单元立场发生器
        shaped(ItemList.SLC_FIELD_PRODUCER.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_1KV.get(), 'd', Items.SOUL_TORCH, 'e', ItemList.ADVANCE_LIMITER.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.MLC_FIELD_PRODUCER.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', Items.SOUL_LANTERN, 'e', ItemList.SLC_FIELD_PRODUCER.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.TLC_FIELD_PRODUCER.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.SLC_FIELD_PRODUCER.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', Items.BEACON, 'e', ItemList.MLC_FIELD_PRODUCER.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //单层单元纳米机器人工厂
        shaped(ItemList.SLC_NANO_ROBOT_FACTORY.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_1KV.get(), 'd', NUGGETS_NANO, 'e', ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.MLC_NANO_ROBOT_FACTORY.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', PLATES_NANO, 'e', ItemList.SLC_NANO_ROBOT_FACTORY.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.TLC_NANO_ROBOT_FACTORY.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.SLC_NANO_ROBOT_FACTORY.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', ItemList.UNPROGRAMMED_NANO_ROBOT.get(), 'e', ItemList.MLC_NANO_ROBOT_FACTORY.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //学徒级魔咒
        shaped(ItemList.ROOKIE_MAGIC_SPELL.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_2KV.get(), 'd', Items.WRITABLE_BOOK, 'e', PLATES_GOLD, 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.PRACTISED_MAGIC_SPELL.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', Items.ENCHANTED_BOOK, 'e', ItemList.ROOKIE_MAGIC_SPELL.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.MASTER_MAGIC_SPELL.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.ROOKIE_MAGIC_SPELL.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', Items.ENCHANTING_TABLE, 'e', ItemList.PRACTISED_MAGIC_SPELL.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //3代防护系统元件
        shaped(ItemList.HEV_ELEMENTS_3RD.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_2KV.get(), 'd', PLATES_DENSE_LEAD, 'e', ItemList.TANTALUM_CAPACITOR.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.HEV_ELEMENTS_4TH.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', PLATES_DENSE_ENDERIUM, 'e', ItemList.HEV_ELEMENTS_3RD.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.HEV_ELEMENTS_5TH.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.HEV_ELEMENTS_3RD.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', PLATES_DENSE_NANO, 'e', ItemList.HEV_ELEMENTS_4TH.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //被改造的图腾
        shaped(ItemList.BLESSED_TOTEM.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', Items.EMERALD_BLOCK, 'e', ItemList.TRANSFORMED_TOTEM.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.SACRED_TOTEM.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.TRANSFORMED_TOTEM.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', Items.TOTEM_OF_UNDYING, 'e', ItemList.BLESSED_TOTEM.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //收集系统
        shaped(ItemList.COLLECTION_SYSTEM.get(), "gdf/ece/bab", 'a', CIRCUITS_BASIC, 'b', ItemList.PIN.get(), 'c', ItemList.EXCITER_1KV.get(), 'd', Items.HOPPER, 'e', ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 'f', ItemList.SOLDERING_IRON.get(), 'g', ItemList.SOLDER_BALL.get()).build(consumer);
        shaped(ItemList.PULVERIZE_SYSTEM.get(), " df/ece/ a ", 'a', CIRCUITS_ADVANCED, 'c', ItemList.EXCITER_2KV.get(), 'd', Tags.Items.OBSIDIAN, 'e', ItemList.COLLECTION_SYSTEM.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        shaped(ItemList.REGROUP_SYSTEM.get(), " df/ecb/ a ", 'a', CIRCUITS_ELITE, 'b', ItemList.COLLECTION_SYSTEM.get(), 'c', ItemList.EXCITER_5KV.get(), 'd', Items.RESPAWN_ANCHOR, 'e', ItemList.PULVERIZE_SYSTEM.get(), 'f', ItemList.SOLDERING_IRON.get()).build(consumer);
        //速度核心
        shaped(ItemList.SPEED_CORE.get(), "   /bab/ c ", 'a', PLATES_ENDERIUM, 'b', ItemList.EXCITER_5KV.get(), 'c', ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get()).build(consumer);
        //装配台
        shaped(ItemList.ASSEMBLY_BLOCK.get(), "ccc/cbc/aaa", 'a', PLATES_IRON, 'b', CIRCUITS_BASIC, 'c', Tags.Items.GLASS).build(consumer);
        //护盾工作台
        shaped(ItemList.SHIELD_WORKBENCH_BLOCK.get(), " d /aba/c c", 'a', PLATES_IRON, 'b', CIRCUITS_ADVANCED, 'c', Tags.Items.INGOTS_IRON, 'd', Items.SEA_LANTERN).build(consumer);
        //纳米机器人编程台
        shaped(ItemList.NANO_ROBOT_PROGRAMMER_BLOCk.get(), "ada/cbc/ada", 'a', PLATES_DENSE_ENDERIUM, 'b', CIRCUITS_ELITE, 'c', ItemList.C_R5_MEMORY.get(), 'd', ItemList.NANO_CABLE.get()).build(consumer);

        //熔炉配方
        //末影锭
        blasting(DUSTS_ENDERIUM, ItemList.INGOTS_ENDERIUM.get(), 2f, 100).build(consumer, AE("cooking/blasting/ingots_enderium_dust"));
        //焊球
        smelting(INGOTS_TIN, ItemList.SOLDER_BALL.get(), 0.1f, 100).build(consumer, AE("cooking/smelting/solder_ball"));
        //铁锭
        smelting(DUSTS_IRON, Items.IRON_INGOT, 0.1f, 100).build(consumer, AE("cooking/smelting/ingots_iron_dust"));
        //金锭
        smelting(DUSTS_GOLD, Items.GOLD_INGOT, 0.1f, 100).build(consumer, AE("cooking/smelting/ingots_gold_dust"));
        //银锭
        smelting(DUSTS_SILVER, ItemList.INGOTS_SILVER.get(), 0.1f, 100).build(consumer, AE("cooking/smelting/ingots_silver_dust"));
        //铝锭
        smelting(DUSTS_ALUMINUM, ItemList.INGOTS_ALUMINUM.get(), 0.1f, 100).build(consumer, AE("cooking/smelting/ingots_aluminum_dust"));
        //锰锭
        smelting(DUSTS_MANGANESE, ItemList.INGOTS_MANGANESE.get(), 0.1f, 100).build(consumer, AE("cooking/smelting/ingots_manganese_dust"));
        //钽锭
        smelting(DUSTS_TANTALUM, ItemList.INGOTS_TANTALUM.get(), 0.1f, 100).build(consumer, AE("cooking/smelting/ingots_tantalum_dust"));
        //铅锭
        smelting(ORES_LEAD, ItemList.INGOTS_LEAD.get(), 0.7f, 100).build(consumer, AE("cooking/smelting/ingots_lead_ore"));
        //锡锭
        smelting(ORES_TIN, ItemList.INGOTS_TIN.get(), 0.7f, 100).build(consumer, AE("cooking/smelting/ingots_tin_ore"));
        //铝锭
        smelting(ORES_ALUMINUM, ItemList.INGOTS_ALUMINUM.get(), 0.7f, 100).build(consumer, AE("cooking/smelting/ingots_aluminum_ore"));
        //锰锭
        smelting(ORES_MANGANESE, ItemList.INGOTS_MANGANESE.get(), 0.7f, 100).build(consumer, AE("cooking/smelting/ingots_manganese_ore"));
        //钽锭
        smelting(ORES_TANTALUM, ItemList.INGOTS_TANTALUM.get(), 0.7f, 100).build(consumer, AE("cooking/smelting/ingots_tantalum_ore"));
        //银锭
        smelting(ORES_SILVER, ItemList.INGOTS_SILVER.get(), 0.7f, 100).build(consumer, AE("cooking/smelting/ingots_silver_ore"));

        //锻造台配方
        //致密铅板
        smithing(PLATES_LEAD, PLATES_LEAD, ItemList.PLATES_DENSE_LEAD.get()).build(consumer, AE("smithing/plates_dense_lead"));
        //致密末影板
        smithing(PLATES_ENDERIUM, PLATES_ENDERIUM, ItemList.PLATES_DENSE_ENDERIUM.get()).build(consumer, AE("smithing/plates_dense_enderium"));
        //致密纳米板
        smithing(PLATES_NANO, PLATES_NANO, ItemList.PLATES_DENSE_NANO.get()).build(consumer, AE("smithing/plates_dense_nano"));

        //普通装配台配方
        //增幅器
        NormalAssemblyRecipeBuilder.recipe(ItemList.AMPLIFIER.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(400)
                .addEnergy(10)
                .addIngredient(ItemList.EXCITER_2KV.get(), 3)
                .addIngredient(ItemList.POLYMERIC_CABLE.get(), 3)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get(), 3)
                .build(consumer, AE("amplifier"));
        //辅助防御系统
        NormalAssemblyRecipeBuilder.recipe(ItemList.DEFENSE_ASSISTANT.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(400)
                .addEnergy(15)
                .addIngredient(PLATES_DENSE_NANO, 3)
                .addIngredient(WIRES_GOLD, 2)
                .addIngredient(ItemList.EXPERT_LIMITER.get(), 1)
                .build(consumer, AE("defense_assistant"));
        //电容组
        NormalAssemblyRecipeBuilder.recipe(ItemList.CAPACITOR_BANK.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(400)
                .addEnergy(25)
                .addIngredient(ItemList.NANO_MNO2_CAPACITANCE.get(), 4)
                .addIngredient(WIRES_GOLD, 2)
                .addIngredient(ItemList.NANO_CABLE.get(), 1)
                .build(consumer, AE("capacitor_bank"));
        //应急卫生系统
        NormalAssemblyRecipeBuilder.recipe(ItemList.EMERGENCY_LIFE_SUPPORT_SYSTEM.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(400)
                .addEnergy(40)
                .addIngredient(Tags.Items.NETHER_STARS, 2)
                .addIngredient(ItemList.SACRED_TOTEM.get(), 6)
                .addIngredient(ItemList.NANO_CABLE.get(), 2)
                .addIngredient(PLATES_DENSE_NANO)
                .build(consumer, AE("emergency_life_support_system"));
        //护盾发生器
        NormalAssemblyRecipeBuilder.recipe(ItemList.SHIELD.get())
                .addBacking(ItemList.L_1H_CPU.get())
                .addTime(1000)
                .addEnergy(10)
                .addIngredient(PLATES_IRON, 4)
                .addIngredient(CIRCUITS_BASIC)
                .addIngredient(Items.HEART_OF_THE_SEA)
                .build(consumer, AE("shield"));
        //纳米材料锭
        NormalAssemblyRecipeBuilder.recipe(ItemList.INGOTS_NANO.get(), 4)
                .addBacking(INGOTS_ENDERIUM)
                .addFluid(NITROGEN, 2000)
                .addTime(200)
                .addEnergy(20)
                .addIngredient(Tags.Items.STORAGE_BLOCKS_COAL, 3)
                .addIngredient(Items.DRAGON_BREATH, 2)
                .addIngredient(Tags.Items.INGOTS_IRON, 3)
                .addIngredient(INGOTS_ENDERIUM)
                .build(consumer, AE("ingots_nano"));
        //微型单元相转移镜面
        NormalAssemblyRecipeBuilder.recipe(ItemList.MINI_PHASE_TRANSFER_SURFACE.get(), 2)
                .addBacking(ItemList.MLC_PHASE_TRANSFER_SURFACE.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(PLASTIC)
                .addIngredient(Tags.Items.RODS_BLAZE)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .build(consumer, AE("mini_phase_transfer_surface"));
        //微型电浆发生器
        NormalAssemblyRecipeBuilder.recipe(ItemList.MINI_PLASMA_PRODUCER.get(), 2)
                .addBacking(ItemList.MLC_PLASMA_PRODUCER.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(PLASTIC)
                .addIngredient(Tags.Items.RODS_BLAZE)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .build(consumer, AE("mini_plasma_producer"));
        //微型单元立场发生器
        NormalAssemblyRecipeBuilder.recipe(ItemList.MINI_FIELD_PRODUCER.get(), 2)
                .addBacking(ItemList.MLC_FIELD_PRODUCER.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(PLASTIC)
                .addIngredient(Tags.Items.RODS_BLAZE)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .build(consumer, AE("mini_field_producer"));
        //魔咒的一部分
        NormalAssemblyRecipeBuilder.recipe(ItemList.A_PART_OF_MAGIC_SPELL.get(), 2)
                .addBacking(ItemList.PRACTISED_MAGIC_SPELL.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(PLASTIC)
                .addIngredient(Tags.Items.RODS_BLAZE)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .build(consumer, AE("a_part_of_magic_spell"));
        //1代防护系统元件
        NormalAssemblyRecipeBuilder.recipe(ItemList.HEV_ELEMENTS_1ST.get(), 2)
                .addBacking(ItemList.HEV_ELEMENTS_4TH.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(PLASTIC)
                .addIngredient(Tags.Items.RODS_BLAZE)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .build(consumer, AE("hev_elements_1st"));

        //纳米护盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.NANO_ROBOT.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get())
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(ItemList.SLC_NANO_ROBOT_FACTORY.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("nano_robot"));
        //粒子盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.PARTICLE_SHIELD.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(4)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.SLC_PARTICLE_PRODUCER.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .build(consumer, AE("particle_shield"));
        //不死盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.UNDYING_PROTECTION.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get())
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(ItemList.TRANSFORMED_TOTEM.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("undying_protection"));
        //HEV
        NormalAssemblyRecipeBuilder.recipe(ItemList.HEV.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(1200)
                .addEnergy(20)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get())
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(ItemList.HEV_ELEMENTS_3RD.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("hev"));
        //废物回收
        NormalAssemblyRecipeBuilder.recipe(ItemList.RUBBISH_SHIELD.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(6)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.COLLECTION_SYSTEM.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("rubbish_shield"));
        //能量盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.ENERGY_SHIELD.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(9)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.SLC_PHASE_TRANSFER_SURFACE.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("energy_shield"));
        //魔法盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.ANTI_MAGIC_SHIELD.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(9)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.ROOKIE_MAGIC_SPELL.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("anti_magic_shield"));
        //立场盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.FIELD_SHIELD.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(9)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.SLC_FIELD_PRODUCER.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("field_shield"));
        //电浆盾
        NormalAssemblyRecipeBuilder.recipe(ItemList.PLASMA_SHIELD.get())
                .addBacking(ItemList.UN_ENCAPSULATION_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(9)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.SLC_PLASMA_PRODUCER.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("plasma_shield"));

        //装配台护盾升级配方
        //废物回收1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.RUBBISH_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.PULVERIZE_SYSTEM.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("rubbish_up1"));
        //废物回收2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.RUBBISH_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.REGROUP_SYSTEM.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("rubbish_up2"));
        //不死1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.UNDYING_PROTECTION.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.BLESSED_TOTEM.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("undying_protection1"));
        //不死2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.UNDYING_PROTECTION.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.SACRED_TOTEM.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("undying_protection2"));
        //能量盾1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.ENERGY_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.MLC_PHASE_TRANSFER_SURFACE.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("energy_shield1"));
        //能量盾2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.ENERGY_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.TLC_PHASE_TRANSFER_SURFACE.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("energy_shield2"));
        //立场盾1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.FIELD_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.MLC_FIELD_PRODUCER.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("field_shield1"));
        //立场盾2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.FIELD_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.TLC_FIELD_PRODUCER.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("field_shield2"));
        //HEV1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.HEV.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.HEV_ELEMENTS_4TH.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("hev1"));
        //HEV2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.HEV.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.HEV_ELEMENTS_5TH.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("hev2"));
        //魔法1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.ANTI_MAGIC_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.PRACTISED_MAGIC_SPELL.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("anti_magic_shield1"));
        //魔法2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.ANTI_MAGIC_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.MASTER_MAGIC_SPELL.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("anti_magic_shield2"));
        //纳米1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.NANO_ROBOT.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.MLC_NANO_ROBOT_FACTORY.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("nano_robot1"));
        //纳米2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.NANO_ROBOT.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.TLC_NANO_ROBOT_FACTORY.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("nano_robot2"));
        //粒子1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.PARTICLE_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.MLC_PARTICLE_PRODUCER.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("particle_shield1"));
        //粒子2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.PARTICLE_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.TLC_PARTICLE_PRODUCER.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("particle_shield2"));
        //电浆1
        ShieldUpgradeAssemblyRecipeBuilder.recipe(0, 1)
                .addBacking(ItemList.PLASMA_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.MLC_PLASMA_PRODUCER.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("plasma_shield1"));
        //电浆2
        ShieldUpgradeAssemblyRecipeBuilder.recipe(1, 2)
                .addBacking(ItemList.PLASMA_SHIELD.get())
                .addFluid(NITROGEN, 1000)
                .addTime(800)
                .addEnergy(10)
                .addIngredient(ItemList.TLC_PLASMA_PRODUCER.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .build(consumer, AE("plasma_shield2"));

        //装配台效果配方
        //原版速度
        EffectAssemblyRecipeBuilder.recipe(Effects.SPEED, 1, 6000)
                .addBacking(ItemList.UNPROGRAMMED_NANO_ROBOT.get())
                .addFluid(NITROGEN, 1000)
                .addTime(100)
                .addEnergy(15)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(PLATES_DENSE_LEAD)
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(Items.SUGAR, 8)
                .build(consumer, AE("speed"));
        //飞行
        EffectAssemblyRecipeBuilder.recipe(EffectList.FLY_EFFECT.get(), 1, 2400)
                .addBacking(ItemList.UNPROGRAMMED_NANO_ROBOT.get())
                .addFluid(NITROGEN, 3000)
                .addTime(400)
                .addEnergy(1000)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get())
                .addIngredient(ItemList.NANO_MNO2_CAPACITANCE.get())
                .addIngredient(PLATES_DENSE_NANO)
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(Items.ELYTRA, 2)
                .build(consumer, AE("fly"));
        //延伸
        EffectAssemblyRecipeBuilder.recipe(EffectList.REACH_EFFECT.get(), 1, 1200)
                .addBacking(ItemList.UNPROGRAMMED_NANO_ROBOT.get())
                .addFluid(NITROGEN, 1000)
                .addTime(100)
                .addEnergy(50)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 2)
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(ItemList.UNPROGRAMMED_NANO_ROBOT.get())
                .build(consumer, AE("reach"));
        //原版饱和
        EffectAssemblyRecipeBuilder.recipe(Effects.SATURATION, 1, 6000)
                .addBacking(ItemList.UNPROGRAMMED_NANO_ROBOT.get())
                .addFluid(NITROGEN, 1000)
                .addTime(100)
                .addEnergy(15)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(Items.CAKE)
                .addIngredient(Items.COOKED_COD)
                .addIngredient(Items.GOLDEN_APPLE)
                .addIngredient(Items.BAKED_POTATO)
                .addIngredient(Items.MUSHROOM_STEM)
                .addIngredient(Items.RABBIT_STEW)
                .addIngredient(Items.SUSPICIOUS_STEW)
                .addIngredient(Items.PUMPKIN_PIE)
                .build(consumer, AE("saturation"));
        //加速
        EffectAssemblyRecipeBuilder.recipe(EffectList.SPEED_EFFECT.get(), 1, 1200)
                .addBacking(ItemList.UNPROGRAMMED_NANO_ROBOT.get())
                .addFluid(NITROGEN, 1000)
                .addTime(100)
                .addEnergy(50)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get(), 2)
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 2)
                .addIngredient(ItemList.SOLDER_BALL.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.SPEED_CORE.get())
                .build(consumer, AE("super_speed"));

        //装配台后缀配方
        //强充能
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.SUPER_CHARGED.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 3)
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 3)
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get(), 2)
                .build(consumer, AE("super_charged"));
        //超载a
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.SUPER_LOAD_ALPHA.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.NORMAL_LIMITER.get(), 2)
                .addIngredient(ItemList.C_R3_MEMORY.get(), 2)
                .addIngredient(Items.REDSTONE_BLOCK, 2)
                .addIngredient(PLATES_DENSE_LEAD, 2)
                .build(consumer, AE("super_load_alpha"));
        //节能
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.CONSERVATION.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 3)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.C_R3_MEMORY.get(), 2)
                .addIngredient(PLATES_DENSE_LEAD, 2)
                .build(consumer, AE("conservation"));
        //高频
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.HIGH_FREQUENCY.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get(), 2)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(Items.REDSTONE_BLOCK, 4)
                .build(consumer, AE("high_frequency"));
        //高压
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.HIGH_PRESSURE.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(Items.REDSTONE_BLOCK, 4)
                .build(consumer, AE("high_pressure"));
        //强化（冷却）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_CD.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(PLATES_DENSE_LEAD, 2)
                .addIngredient(Items.BLUE_ICE, 1)
                .build(consumer, AE("intensify_cd"));
        //强化（耗能）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_CO.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 4)
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get(), 2)
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("intensify_co"));
        //强化（强度）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_I.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get(), 2)
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(PLATES_DENSE_LEAD, 3)
                .build(consumer, AE("intensify_i"));
        //强化（魔法）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_M.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.A_PART_OF_MAGIC_SPELL.get(), 2)
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("intensify_m"));
        //强化（其他）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_O.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.HEV_ELEMENTS_1ST.get(), 2)
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("intensify_o"));
        //强化（过载惩罚）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_PE.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(PLATES_DENSE_LEAD, 7)
                .build(consumer, AE("intensify_pe"));
        //强化（层数）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_PI.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.MINI_PHASE_TRANSFER_SURFACE.get(), 2)
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("intensify_pi"));
        //强化（回复速率）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_REC.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(Items.CLOCK)
                .addIngredient(PLATES_DENSE_LEAD, 2)
                .build(consumer, AE("intensify_rec"));
        //强化（远程）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_REM.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.MINI_FIELD_PRODUCER.get(), 2)
                .addIngredient(PLATES_DENSE_LEAD)
                .build(consumer, AE("intensify_rem"));
        //强化（承受上限）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.INTENSIFY_U.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(8)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(PLATES_DENSE_LEAD, 3)
                .build(consumer, AE("intensify_u"));
        //强化（超频）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.OVERCLOCK.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.EXCITER_1KV.get())
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get())
                .addIngredient(ItemList.ALUMINUM_ELECTROLYTIC_CAPACITOR.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK, 4)
                .build(consumer, AE("overclock"));
        //特化（近战）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.SPECIALIZATION_C.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.MINI_PLASMA_PRODUCER.get())
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_c"));
        //特化（魔法）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.SPECIALIZATION_M.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.A_PART_OF_MAGIC_SPELL.get())
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_m"));
        //特化（其他）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.SPECIALIZATION_O.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.HEV_ELEMENTS_1ST.get())
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_o"));
        //特化（远程）
        SuffixAssemblyRecipeBuilder.recipe(SuffixList.SPECIALIZATION_R.get(), 1)
                .addBacking(ItemList.UNPROGRAMMED_KID.get())
                .addFluid(NITROGEN, 1000)
                .addTime(600)
                .addEnergy(5)
                .addIngredient(ItemList.MINI_FIELD_PRODUCER.get())
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.RED_STONE_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R3_MEMORY.get())
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_r"));

        //装配台后缀升级配方
        //超载b
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_LOAD_BETA.get(), 1)
                .addOldSuffix(SuffixList.SUPER_LOAD_ALPHA.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER)
                .build(consumer, AE("super_load_beta"));
        //超载b2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_LOAD_BETA.get(), 2)
                .addOldSuffix(SuffixList.SUPER_LOAD_ALPHA.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER, 2)
                .build(consumer, AE("super_load_beta2"));
        //超载b3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_LOAD_BETA.get(), 3)
                .addOldSuffix(SuffixList.SUPER_LOAD_ALPHA.get(), 3)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER, 3)
                .build(consumer, AE("super_load_beta3"));
        //涓流
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.TRICKLE_CHARGE.get(), 3)
                .addOldSuffix(SuffixList.SUPER_CHARGED.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.PRISMARINE_SHARD)
                .build(consumer, AE("trickle_charge"));
        //涓流2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.TRICKLE_CHARGE.get(), 2)
                .addOldSuffix(SuffixList.SUPER_CHARGED.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.PRISMARINE_SHARD, 2)
                .build(consumer, AE("trickle_charge2"));
        //涓流3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.TRICKLE_CHARGE.get(), 3)
                .addOldSuffix(SuffixList.SUPER_CHARGED.get(), 3)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.PRISMARINE_SHARD, 3)
                .build(consumer, AE("trickle_charge3"));
        //节能2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.CONSERVATION.get(), 2)
                .addOldSuffix(SuffixList.CONSERVATION.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(5)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 3)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("conservation2"));
        //节能3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.CONSERVATION.get(), 3)
                .addOldSuffix(SuffixList.CONSERVATION.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 3)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.EXPERT_LIMITER.get())
                .addIngredient(ItemList.NANO_CABLE.get())
                .addIngredient(PLATES_DENSE_NANO)
                .build(consumer, AE("conservation3"));
        //高频2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.HIGH_FREQUENCY.get(), 2)
                .addOldSuffix(SuffixList.HIGH_FREQUENCY.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get(), 2)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.ENVIRONMENTAL_CABLE.get())
                .build(consumer, AE("high_frequency2"));
        //高频3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.HIGH_FREQUENCY.get(), 3)
                .addOldSuffix(SuffixList.HIGH_FREQUENCY.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.NANO_MNO2_CAPACITANCE.get(), 2)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .build(consumer, AE("high_frequency3"));
        //高压2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.HIGH_PRESSURE.get(), 2)
                .addOldSuffix(SuffixList.HIGH_PRESSURE.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.EXCITER_1KV.get(), 2)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.L_1H_CPU.get())
                .addIngredient(ItemList.NORMAL_LIMITER.get())
                .build(consumer, AE("high_pressure2"));
        //高压3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.HIGH_PRESSURE.get(), 3)
                .addOldSuffix(SuffixList.HIGH_PRESSURE.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.EXCITER_2KV.get(), 2)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.ADVANCE_LIMITER.get())
                .build(consumer, AE("high_pressure3"));
        //强化（冷却）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_CD.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_CD.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(PLATES_DENSE_ENDERIUM, 2)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.BLUE_ICE)
                .build(consumer, AE("intensify_cd2"));
        //强化（冷却）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_CD.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_CD.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(PLATES_DENSE_NANO, 2)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.NANO_CABLE.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.BLUE_ICE)
                .build(consumer, AE("intensify_cd3"));
        //强化（近战）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_CL.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_CL.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.MINI_PLASMA_PRODUCER.get())
                .build(consumer, AE("intensify_cl2"));
        //强化（近战）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_CL.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_CL.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(PLATES_DENSE_NANO)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.MINI_PLASMA_PRODUCER.get())
                .build(consumer, AE("intensify_cl3"));
        //强化（耗能）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_CO.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_CO.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 4)
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get(), 2)
                .build(consumer, AE("intensify_co2"));
        //强化（耗能）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_CO.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_CO.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 4)
                .addIngredient(PLATES_DENSE_NANO)
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.NANO_CABLE.get(), 2)
                .build(consumer, AE("intensify_co3"));
        //强化（触发下限）
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_F.get(), 1)
                .addOldSuffix(SuffixList.INTENSIFY_U.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.PRISMARINE_SHARD)
                .build(consumer, AE("intensify_f"));
        //强化（触发下限）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_F.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_U.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.PRISMARINE_SHARD, 2)
                .build(consumer, AE("intensify_f2"));
        //强化（触发下限）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_F.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_U.get(), 3)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.PRISMARINE_SHARD, 3)
                .build(consumer, AE("intensify_f3"));
        //强化（强度）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_I.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_I.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get(), 2)
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(PLATES_DENSE_ENDERIUM, 3)
                .build(consumer, AE("intensify_i2"));
        //强化（强度）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_I.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_I.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.NANO_MNO2_CAPACITANCE.get(), 2)
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(PLATES_DENSE_NANO, 3)
                .build(consumer, AE("intensify_i3"));
        //强化（魔法）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_M.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_M.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.A_PART_OF_MAGIC_SPELL.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("intensify_m2"));
        //强化（魔法）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_M.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_M.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.A_PART_OF_MAGIC_SPELL.get())
                .addIngredient(PLATES_DENSE_NANO)
                .build(consumer, AE("intensify_m3"));
        //强化（其他）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_O.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_O.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.HEV_ELEMENTS_1ST.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("intensify_o2"));
        //强化（其他）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_O.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_O.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.HEV_ELEMENTS_1ST.get())
                .addIngredient(PLATES_DENSE_NANO)
                .build(consumer, AE("intensify_o3"));
        //强化（过载惩罚）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_PE.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_PE.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(PLATES_DENSE_ENDERIUM, 7)
                .build(consumer, AE("intensify_pe2"));
        //强化（过载惩罚）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_PE.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_PE.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(PLATES_DENSE_NANO, 7)
                .build(consumer, AE("intensify_pe3"));
        //强化（层数）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_PI.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_PI.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.MINI_PHASE_TRANSFER_SURFACE.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("intensify_pi2"));
        //强化（层数）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_PI.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_PI.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.MINI_PHASE_TRANSFER_SURFACE.get())
                .addIngredient(PLATES_DENSE_NANO)
                .build(consumer, AE("intensify_pi3"));
        //强化（回复速率）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_REC.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_REC.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.POLYMERIC_CABLE.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.CLOCK)
                .addIngredient(PLATES_DENSE_ENDERIUM, 2)
                .build(consumer, AE("intensify_rec2"));
        //强化（回复速率）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_REC.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_REC.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.NANO_CABLE.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.CLOCK)
                .addIngredient(PLATES_DENSE_NANO, 2)
                .build(consumer, AE("intensify_rec3"));
        //强化（远程）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_REM.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_REM.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(ItemList.MINI_FIELD_PRODUCER.get())
                .addIngredient(PLATES_DENSE_ENDERIUM)
                .build(consumer, AE("intensify_rem2"));
        //强化（远程）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_REM.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_REM.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(ItemList.MINI_FIELD_PRODUCER.get())
                .addIngredient(PLATES_DENSE_NANO)
                .build(consumer, AE("intensify_rem3"));
        //强化（承受上限）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_U.get(), 2)
                .addOldSuffix(SuffixList.INTENSIFY_U.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(9)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_2KV.get(), 2)
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(PLATES_DENSE_ENDERIUM, 3)
                .build(consumer, AE("intensify_u2"));
        //强化（承受上限）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.INTENSIFY_U.get(), 3)
                .addOldSuffix(SuffixList.INTENSIFY_U.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(10)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.EXCITER_5KV.get(), 2)
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(PLATES_DENSE_NANO, 3)
                .build(consumer, AE("intensify_u3"));
        //强化（低频）
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.LOW_FREQUENCY.get(), 1)
                .addOldSuffix(SuffixList.HIGH_FREQUENCY.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER)
                .build(consumer, AE("low_frequency"));
        //强化（低频）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.LOW_FREQUENCY.get(), 2)
                .addOldSuffix(SuffixList.HIGH_FREQUENCY.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER, 2)
                .build(consumer, AE("low_frequency2"));
        //强化（低频）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.LOW_FREQUENCY.get(), 3)
                .addOldSuffix(SuffixList.HIGH_FREQUENCY.get(), 3)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER, 3)
                .build(consumer, AE("low_frequency3"));
        //强化（低压）
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.LOW_PRESSURE.get(), 1)
                .addOldSuffix(SuffixList.HIGH_PRESSURE.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER)
                .build(consumer, AE("low_pressure"));
        //强化（低压）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.LOW_PRESSURE.get(), 2)
                .addOldSuffix(SuffixList.HIGH_PRESSURE.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER, 2)
                .build(consumer, AE("low_pressure2"));
        //强化（低压）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.LOW_PRESSURE.get(), 3)
                .addOldSuffix(SuffixList.HIGH_PRESSURE.get(), 3)
                .addFluid(NITROGEN, 1000)
                .addTime(20)
                .addEnergy(10)
                .addIngredient(Items.BLAZE_POWDER, 3)
                .build(consumer, AE("low_pressure3"));
        //超频2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.OVERCLOCK.get(), 2)
                .addOldSuffix(SuffixList.OVERCLOCK.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.EXCITER_2KV.get())
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get())
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK, 4)
                .build(consumer, AE("overclock2"));
        //超频3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.OVERCLOCK.get(), 3)
                .addOldSuffix(SuffixList.OVERCLOCK.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.EXCITER_5KV.get())
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get())
                .addIngredient(ItemList.NANO_MNO2_CAPACITANCE.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK, 4)
                .build(consumer, AE("overclock3"));
        //特化（近战）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_C.get(), 2)
                .addOldSuffix(SuffixList.SPECIALIZATION_C.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.MINI_PLASMA_PRODUCER.get())
                .addIngredient(ItemList.EXCITER_2KV.get(), 2)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_c2"));
        //特化（近战）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_C.get(), 3)
                .addOldSuffix(SuffixList.SPECIALIZATION_C.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.MINI_PLASMA_PRODUCER.get())
                .addIngredient(ItemList.EXCITER_5KV.get(), 2)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_c3"));
        //特化（魔法）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_M.get(), 2)
                .addOldSuffix(SuffixList.SPECIALIZATION_M.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.A_PART_OF_MAGIC_SPELL.get())
                .addIngredient(ItemList.EXCITER_2KV.get(), 2)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_m2"));
        //特化（魔法）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_M.get(), 3)
                .addOldSuffix(SuffixList.SPECIALIZATION_M.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.A_PART_OF_MAGIC_SPELL.get())
                .addIngredient(ItemList.EXCITER_5KV.get(), 2)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_m3"));
        //特化（其他）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_O.get(), 2)
                .addOldSuffix(SuffixList.SPECIALIZATION_O.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.HEV_ELEMENTS_1ST.get())
                .addIngredient(ItemList.EXCITER_2KV.get(), 2)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_o2"));
        //特化（其他）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_O.get(), 3)
                .addOldSuffix(SuffixList.SPECIALIZATION_O.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.HEV_ELEMENTS_1ST.get())
                .addIngredient(ItemList.EXCITER_5KV.get(), 2)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_o3"));
        //特化（远程）2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_R.get(), 2)
                .addOldSuffix(SuffixList.SPECIALIZATION_R.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.MINI_FIELD_PRODUCER.get())
                .addIngredient(ItemList.EXCITER_2KV.get(), 2)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R4_MEMORY.get())
                .addIngredient(ItemList.L_2K_1000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_r2"));
        //特化（远程）3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SPECIALIZATION_R.get(), 3)
                .addOldSuffix(SuffixList.SPECIALIZATION_R.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.MINI_FIELD_PRODUCER.get())
                .addIngredient(ItemList.EXCITER_5KV.get(), 2)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 2)
                .addIngredient(ItemList.C_R5_MEMORY.get())
                .addIngredient(ItemList.L_3A_5000_CPU.get())
                .addIngredient(Items.REDSTONE_BLOCK)
                .build(consumer, AE("specialization_r3"));
        //强充能2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_CHARGED.get(), 2)
                .addOldSuffix(SuffixList.SUPER_CHARGED.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.GOLD_PLATING_ENERGY_GUIDER.get(), 3)
                .addIngredient(ItemList.TANTALUM_CAPACITOR.get(), 3)
                .addIngredient(ItemList.POLYMERIC_CABLE.get(), 2)
                .build(consumer, AE("super_charged2"));
        //强充能3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_CHARGED.get(), 3)
                .addOldSuffix(SuffixList.SUPER_CHARGED.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.SUPERCONDUCTION_ENERGY_GUIDER.get(), 3)
                .addIngredient(ItemList.NANO_MNO2_CAPACITANCE.get(), 3)
                .addIngredient(ItemList.NANO_CABLE.get(), 2)
                .build(consumer, AE("super_charged3"));
        //超载a2
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_LOAD_ALPHA.get(), 2)
                .addOldSuffix(SuffixList.SUPER_LOAD_ALPHA.get(), 1)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(6)
                .addIngredient(ItemList.ADVANCE_LIMITER.get(), 2)
                .addIngredient(ItemList.C_R4_MEMORY.get(), 2)
                .addIngredient(PLATES_DENSE_ENDERIUM, 2)
                .addIngredient(Items.REDSTONE_BLOCK, 2)
                .build(consumer, AE("super_load_alpha2"));
        //超载a3
        SuffixUpgradeAssemblyBuilder.recipe(SuffixList.SUPER_LOAD_ALPHA.get(), 3)
                .addOldSuffix(SuffixList.SUPER_LOAD_ALPHA.get(), 2)
                .addFluid(NITROGEN, 1000)
                .addTime(700)
                .addEnergy(7)
                .addIngredient(ItemList.EXPERT_LIMITER.get(), 2)
                .addIngredient(ItemList.C_R5_MEMORY.get(), 2)
                .addIngredient(PLATES_DENSE_NANO, 2)
                .addIngredient(Items.REDSTONE_BLOCK, 2)
                .build(consumer, AE("super_load_alpha3"));
    }

    /**
     * 生成原版有序配方
     *
     * @param result 合成产物
     * @param count  产物数量
     * @param shape  配方的形状，如：ab /bbb/ ss，如某位置无物品则输入空格
     * @param key    配方中各个键名对应的值，必须两个一组。第一个是char，第二个是对应的材料，可以是 ITag<Item>, IItemProvider, Ingredient。
     *               如'a', Items.STONE, 'b', Items.END_ROD
     * @return 返回Builder本身，必须要进行一次build
     */
    private ShapedRecipeBuilder shaped(Item result, int count, String shape, Object... key) {
        String[] shapes = shape.split("/");
        if (shapes.length > 3) {
            throw new IllegalArgumentException("错误的配方形状");
        } else {
            if (key.length % 2 != 0) {
                throw new IllegalArgumentException("键值对不成对，输入的键值对个数为 " + key.length);
            } else {

                ShapedRecipeBuilder builder = ShapedRecipeBuilder.shapedRecipe(result, count)
                        .patternLine(shapes[0])
                        .patternLine(shapes[1])
                        .patternLine(shapes[2])
                        .addCriterion(String.valueOf(result.getRegistryName()), hasItem(result));

                for (int i = 0, keyLength = key.length; i < keyLength; i = i + 2) {
                    char k = (Character) key[i];
                    Object v = key[i + 1];

                    if (v instanceof ITag<?>) {
                        builder.key(k, (ITag<Item>) v);
                    } else if (v instanceof Item) {
                        builder.key(k, (Item) v);
                    } else if (v instanceof Ingredient) {
                        builder.key(k, (Ingredient) v);
                    } else throw new IllegalArgumentException("错误的配方值(value)" + v.getClass());
                }

                return builder;
            }
        }
    }

    /**
     * 生成原版有序配方
     *
     * @param result 合成产物
     * @param shape  配方的形状，如：ab /bbb/ ss
     * @param key    配方中各个键名对应的值，必须两个一组。第一个是char，第二个是对应的材料，可以是 ITag<Item>, IItemProvider, Ingredient。
     *               如'a', Items.STONE, 'b', Items.END_ROD
     * @return 返回Builder本身，必须要进行一次build
     */
    private ShapedRecipeBuilder shaped(Item result, String shape, Object... key) {
        return shaped(result, 1, shape, key);
    }

    /**
     * 生成原版无序配方
     *
     * @param result      合成产物
     * @param ingredients 材料及其数量，如：Items.APPLE, 2, Items.STONE, 1。如果第一个是数字，则表示产物的数量，否则则为材料
     * @return 返回Builder本身，必须要进行一次build
     */
    private ShapelessRecipeBuilder shapeless(Item result, Object... ingredients) {
        int i;
        int count;

        try {
            count = (Integer) ingredients[0];
            i = 1;
            if (ingredients.length % 2 != 1) {
                throw new IllegalArgumentException("除去第一个数字作为产物数量外，每个材料必须匹配一个数量 " + ingredients.length);
            }
        } catch (ClassCastException ex) {
            i = 0;
            count = 1;
            if (ingredients.length % 2 != 0) {
                throw new IllegalArgumentException("每个材料必须匹配一个数量 " + ingredients.length);
            }
        }

        ShapelessRecipeBuilder builder = ShapelessRecipeBuilder.shapelessRecipe(result, count)
                .addCriterion(String.valueOf(result.getRegistryName()), hasItem(result));

        for (; i < ingredients.length; i = i + 2) {
            Object k = ingredients[i];
            int c = (Integer) ingredients[i + 1];

            if (k instanceof ITag<?>) {
                for (char j = 0; j < c; j++) {
                    builder.addIngredient((ITag<Item>) k);
                }
            } else if (k instanceof Item) {
                builder.addIngredient((Item) k, c);
            } else if (k instanceof Ingredient) {
                builder.addIngredient((Ingredient) k, c);
            }
        }

        return builder;
//        return shapeless(result, 1, ingredients);
    }

    /**
     * 生成原版锻造台配方
     *
     * @param base     被升级的物品
     * @param addition 升级消耗的物品
     * @param result   升级后的物品
     * @return 返回Builder本身，必须进行一次build
     */
    private SmithingRecipeBuilder smithing(Ingredient base, Ingredient addition, Item result) {
        return SmithingRecipeBuilder.smithingRecipe(base, addition, result).addCriterion(String.valueOf(result.getRegistryName()), hasItem(result));
    }

    /**
     * 生成原版锻造台配方
     *
     * @param base     被升级的物品
     * @param addition 升级消耗的物品
     * @param result   升级后的物品
     * @return 返回Builder本身，必须进行一次build
     */
    private SmithingRecipeBuilder smithing(Object base, Object addition, Item result) {
        return smithing(objToIng(base), objToIng(addition), result);
    }

    /**
     * 生成原版熔炼配方
     *
     * @param ingredient 原料
     * @param result     产物
     * @param xp         经验产出
     * @param time       消耗时间
     * @return 返回Builder本身，必须进行一次build
     */
    private CookingRecipeBuilder smelting(Ingredient ingredient, Item result, float xp, int time) {
        return CookingRecipeBuilder.smeltingRecipe(ingredient, result, xp, time).addCriterion(String.valueOf(result.getRegistryName()), hasItem(result));
    }

    /**
     * 生成原版熔炼配方
     *
     * @param ingredient 原料
     * @param result     产物
     * @param xp         经验产出
     * @param time       消耗时间
     * @return 返回Builder本身，必须进行一次build
     */
    private CookingRecipeBuilder smelting(Object ingredient, Item result, float xp, int time) {
        return smelting(objToIng(ingredient), result, xp, time);
    }


    /**
     * 生成原版高炉配方
     *
     * @param ingredient 原料
     * @param result     产物
     * @param xp         经验产出
     * @param time       消耗时间
     * @return 返回Builder本身，必须进行一次build
     */
    private CookingRecipeBuilder blasting(Ingredient ingredient, Item result, float xp, int time) {
        return CookingRecipeBuilder.blastingRecipe(ingredient, result, xp, time).addCriterion(String.valueOf(result.getRegistryName()), hasItem(result));
    }

    private CookingRecipeBuilder blasting(Object ingredient, Item result, float xp, int time) {
        return blasting(objToIng(ingredient), result, xp, time);
    }

    private ConditionalRecipe.Builder conditional(ICondition condition, Consumer<Consumer<IFinishedRecipe>> recipe) {
        return ConditionalRecipe.builder()
                .addCondition(condition)
                .addRecipe(recipe);
    }

    /**
     * @param modId  需求的modID，仅当该mod加载时此配方会加载
     * @param recipe 有mod加载条件的配方，如：recipe::build
     * @return 返回一个Builder本身，必须要进行一次build
     */
    private ConditionalRecipe.Builder modLimit(String modId, Consumer<Consumer<IFinishedRecipe>> recipe) {
        return conditional(new ModLoadedCondition(modId), recipe);
    }

    private ResourceLocation AE(String path) {
        return new ResourceLocation(ModLib.MOD_ID, path);
    }

    /**
     * 将Object转换为Ingredient，若无法转换则抛出错误 IllegalArgumentException
     *
     * @param ingredient 需被转换为Ingredient的Object
     * @return 完成转换的Ingredient
     */
    public static Ingredient objToIng(Object ingredient) {
        Ingredient i;
        if (ingredient instanceof Ingredient) {
            i = (Ingredient) ingredient;
        } else if (ingredient instanceof Item) {
            i = Ingredient.fromItems((Item) ingredient);
        } else if (ingredient instanceof ITag<?>) {
            i = Ingredient.fromTag((ITag<Item>) ingredient);
        } else {
            throw new IllegalArgumentException("传入的object不是物品、成分、标签中的一种");
        }

        return i;
    }
}
